import axios from 'axios'
import router from '@/router'
import qs from 'qs'
import { Toast } from 'vant'
import storage from 'store'

const service = axios.create({
  //  process.env.NODE_ENV === 'development' //来判断是否开发环境
  // baseURL: 'http://cinv.18durensheng.com/index.php/api/',
  baseURL: 'http://www.anticinv.com/index.php/api/',
  timeout: 50000,
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  }
})

// 异常拦截处理器
const errorHandler = (error) => {
  if (error.response) {
    const data = error.response.data

    if (error.response.status === 403) {
      Toast.fail(data.message)
    }
    if (error.response.status === 401) {
      Toast.fail('身份信息已经失效，请重新登录')
      // 从 localStorage 获取 token
      const token = storage.get('token')
      setTimeout(() => {
        if (token) {
          storage.remove('token')
          storage.remove('userInfo')
        }
        router.push('/userType')
      }, 2000)
    }
    if (error.response.status === 500) {
      Toast.fail('服务器开小差了')
    }
  }
  return Promise.reject(error)
}

service.interceptors.request.use(
  config => {
    //! multipart/form-data 格式上传文件的传fromData对象 不需要qs 这里做判断
    if (config.headers['Content-Type'] === 'application/x-www-form-urlencoded') {
      config.data = qs.stringify(config.data)
    }
    // 有token就直接带就行不用白名单没必要
    const token = storage.get('token')
    if (token) config.headers.token = token

    return config
  }, errorHandler)

service.interceptors.response.use(
  response => {
    // console.log(response)
    if (response.status === 200) {
      return response.data
    }
  }, errorHandler)

export default service
